package org.spring.boot.example.dds;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 
 * <p>
 * 数据源切换注解， 优先级：目标类方法 > 目标类 > 接口方法 > 接口类<br/>
 * 支持方法使用@Transactional，事务传播机制只在同一线程与同一数据源进行传播
 * </p>
 * <p style='color:red;'>
 * 每个数据源的传播机制都是隔离的， 不会互相影响， 使用时要考虑数据一致性的问题
 * </p>
 * 
 * @see DynamicDataSourceAdvisor
 * @see DynamicDataSourceAdvice
 * @author 吕潇
 * @date 2019-10-28
 */
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface DataSourceName {
	String value();

}
